import 'package:film/model/film_category_model.dart';
import 'package:film/model/film_model.dart';
import 'package:film/service/api_service.dart';
import 'package:get/get.dart';

class FilmAllController extends GetxController {
  final DioService apiService = DioService();
  // final options = ['推荐', '番剧', '剧场版', '4K', '待添加'];
  SearchCriteria criteria = SearchCriteria(page: "1", limit: "12", resultType: "1", typeId: "1");
  // 影片列表
  var filmList = <Film>[].obs;
  // 是否正在加载
  var isLoading = true.obs;
  // 所有可用的筛选类别和它们的选项
  final List<FilterCategory> filterCategories = [
    FilterCategory(
      key: 'type_id',
      title: '类型',
      options: [
        '番剧',
        '剧场版',
        '4K',
        '待添加',
      ],
    ),
    FilterCategory(
      key: 'vod_class',
      title: '分类',
      options: [
        '全部',
        '原创',
        '漫画改',
        '小说改',
        '游戏改',
        '异世界',
        '热血',
        '穿越',
        '奇幻',
        '动作',
        '战斗',
        '搞笑',
        '日常',
        '科幻',
        '萌系',
        '治愈',
        '校园',
        '少儿',
        '泡面',
        '恋爱',
        '少女',
        '魔法',
        '冒险',
        '历史',
        '战争',
        '架空',
        '机战',
        '神魔',
        '声控',
        '运动',
        '励志',
        '音乐',
        '推理',
        '社团',
        '智斗',
        '催泪',
        '美食',
        '偶像',
        '乙女',
        '职场',
        '温馨',
        '悠闲',
        '竞技',
        '青春',
        '悬疑'
      ],
    ),
    FilterCategory(
      key: 'vod_year',
      title: '年份',
      options: [
        '全部',
        '2025',
        '2024',
        '2023',
        '2022',
        '2021',
        '2020',
        '2019',
        '2018',
        '2017',
        '2016',
        '2015',
        '2014',
        '2013',
        '2012',
        '2011',
        '2010',
      ],
    ),
    FilterCategory(
      key: 'vod_lang',
      title: '季度',
      options: [
        '全部',
        '一月',
        '四月',
        '七月',
        '十月',
      ],
    ),
  ];

  // 存储当前每个筛选类别的选中值
  var selectedFilters = <String, String>{}.obs;
  @override
  void onInit() {
    super.onInit();
    // 初始化时，为每个筛选类别设置默认选中项
    for (var category in filterCategories) {
      selectedFilters[category.key] = category.options.first;
    }
    fetchFilms();
  }

  /// 模拟从后端获取影片数据
  Future<void> fetchFilms() async {
    try {
      isLoading(true);
      ApiResponse<List<Film>> response = await apiService.searchVideo(criteria);
      if (response.success) {
        filmList.assignAll(response.data ?? []);
      }
    } finally {
      isLoading(false);
    }
  }

  /// 当用户在筛选区域点击一个新的选项时调用
  void selectFilterOption(String categoryKey, String option) {
    // 如果当前选中的就是这个选项，则不执行任何操作，防止重复请求
    if (selectedFilters[categoryKey] == option) {
      return;
    }
    selectedFilters[categoryKey] = option;
    if (categoryKey == 'type_id') {
      if (option == '番剧') {
        criteria.typeId = '1';
      } else if (option == '剧场版') {
        criteria.typeId = '2';
      } else if (option == '4K') {
        criteria.typeId = '3';
      } else if (option == '待添加') {
        criteria.typeId = '4';
      }
    } else if (categoryKey == 'vod_class') {
      criteria.vodClass = option == '全部' ? '' : option;
    } else if (categoryKey == 'vod_year') {
      criteria.vodYear = option == '全部' ? '' : option;
    } else if (categoryKey == 'vod_lang') {
      criteria.vodLang = option == '全部' ? '' : option;
    }

    fetchFilms();
  }
}
